Conventionally, a semiconductor memory holding an electrical charge to store information according to the quantity of a held electrical charge is widely known. Information stored by the semiconductor memory is determined on the basis of comparison between a voltage according to the quantity of a held electrical charge and a read voltage which is set in advance. The quantity of a held electrical charge changes over time or on every access. A technique for shifting the read voltage according to the change of the quantity of a held electrical charge has been developed in order to prevent information from being lost because of the change in the quantity of a held electrical charge.